/**
 * 
 */
package br.idez.idezJet.negocio.service;

import java.util.Collection;

import javax.ejb.EJB;
import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.persistence.OptimisticLockException;

import br.idez.idezJet.integracao.dao.PedidoDAO;
import br.idez.idezJet.integracao.vo.Pedido;

/**
 * @author Moacir Junior
 *
 */
@Stateless
@Remote(PedidoService.class)
public class PedidoServiceImpl implements PedidoService {
	
	@EJB
	private PedidoDAO pedidoDAO;

	/* (non-Javadoc)
	 * @see br.idez.idezJet.negocio.service.IdezJetService#incluir(java.lang.Object)
	 */
	@Override
	public void incluir(Pedido o) throws Exception {
		pedidoDAO.incluir(o);
	}

	/* (non-Javadoc)
	 * @see br.idez.idezJet.negocio.service.IdezJetService#alterar(java.lang.Object)
	 */
	@Override
	public void alterar(Pedido o) throws Exception {
		try{
			pedidoDAO.alterar(o);
		}catch(OptimisticLockException ex){
			Pedido p = this.consultar(o);
			this.alterar(p);
		}
	}

	/* (non-Javadoc)
	 * @see br.idez.idezJet.negocio.service.IdezJetService#consultar(java.lang.Object)
	 */
	@Override
	public Pedido consultar(Pedido o) throws Exception {
		return pedidoDAO.consultar(o);
	}

	/* (non-Javadoc)
	 * @see br.idez.idezJet.negocio.service.IdezJetService#listar()
	 */
	@Override
	public Collection<Pedido> listar() throws Exception {
		return pedidoDAO.listar();
	}

	/* (non-Javadoc)
	 * @see br.idez.idezJet.negocio.service.IdezJetService#listar(java.lang.Object)
	 */
	@Override
	public Collection<Pedido> listar(Pedido o) throws Exception {
		return pedidoDAO.listar(o);
	}

	/* (non-Javadoc)
	 * @see br.idez.idezJet.negocio.service.IdezJetService#excluir(java.lang.Object)
	 */
	@Override
	public void excluir(Pedido o) throws Exception {
		try{
			pedidoDAO.excluir(o);
		}catch(OptimisticLockException ex){
			Pedido p = this.consultar(o);
			this.excluir(p);
		}
	}

}
